Soru & Cevap

Splash Screen Animasyonu

16.08.2014 - 10:29

Merhaba,
Google Play'deki şu uygulamada güzel bir splash screen animasyonu kullanılmış ve daha sonra animasyon bitince StartActivity ile MainActivity'ye geçiş sağlanmış.

Tam olarak böyle bir şey yapmak istiyorum. Nasıl yapabilirim. Bir örnek bulamadım buna benzeyen. Sabit bir resim ile yapılmış bir Splash Screen örneği var internette ama yukardaki gibi nasıl yapılıyor ?



 

78 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-9388-1408276089.png
tahakirca
17.08.2014 - 02:04

O animasyonu yapabilmen için frame frame her hali elinde olmalı yani mantık aynı çizgi film yada animasyon film mantığıyla işliyor.O animasyonun başlangıç halinden bitiş haline kadar tüm frameleri elinde olduktan sonra onları bir sıraya diziyorsun ve gösterim hızını saniyenin 10 da biri yapıyorsun(Bu senin animasyon hızı isteğine göre değişir). Elinde her bir frame i olduktan sonra

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
 android:oneshot="true" > //bir defa olması için

 <item
 android:drawable="@drawable/resim1"
 android:duration="100"/>
 <item
 android:drawable="@drawable/resim2"
 android:duration="100"/>
 <item
 android:drawable="@drawable/resim3"
 android:duration="100"/>
 <item
 android:drawable="@drawable/resim4"
 android:duration="100"/>
.

.

.

<item
 android:drawable="@drawable/resim10"
 android:duration="100"/>
</animation-list>
 Bu şekilde yapıyorsun ve oluşturduğun imageview'in background una bu animation dosyasını seçiyorsun

android:background="@animation/animasyon_xmlin_adi"

Taha
17.08.2014 - 06:17
outOfMemory hatası cihazın memory sinin yani ram in yetmediği zaman alınır. Animasyon fazla ram kullanan bir yapıdır. Ben onunla ilgili olduğunu düşünüyorum.
Burhan Aksendir
17.08.2014 - 06:25
Peki o halde, bu gibi bir hata durumunda nasıl bir try catch ile uygulamamızın çalışmaya devam etmesini nasıl sağlayabilir ve bu hatanın gerçek cihazlarda oluşmasının üstesinden nasıl geliriz? Çünkü spash geçisi esnasında hatayı alan kullanıcı uygulamayı hiç çalıştıramayacak, değil mi ?
Taha
17.08.2014 - 10:36
Bu hata gerçek cihazlarda meydana gelmez. Çünkü oluşturduğun emülatör cok büyük ihtimal 128 mb ram'e sahiptir. Suan en minimum cihaz 512 ram olduğu için sıkıntı olmaz
Burhan Aksendir
17.08.2014 - 11:40
Anladım. Bir test için 512 ramli cihaz üzerinde denedim, sorun olmadı. Yalnız şöyle bir problem var. Mesela uygulama çalışıyor, splash ekranı geçiyor ve sonra back'e basıyorum. Ardından uygulamayı yeniden çalıştırınca bu sefer şöyle hata veriyor: dalvikvm-heap 355568-byte external allocation too large for this process. Clamp target GC heap from 33.744MB to 32.000MB Bunu nasıl çözebilirim ? Teşekkürler.
Burhan Aksendir
17.08.2014 - 05:15
Teşekkür ederim. Peki hazırladığım bu frame'leri resource altındaki hangi klasörde tutmalıyım ? drawable-mdpi, hdpi, xdpi, xxdpi ? Ya da drawable-nodpi klasörü mü oluşturmalıyım? 2. olarak OnCreate içerisinde animasyonu start edip bittiğinde intentle geçiş mi yapacağım ?
Taha
17.08.2014 - 05:47
Herhangibirine koyman yeterli olacaktır. Ben genelde hdpi kullanırım. Diğer soruna gelince Animasyon kaç sn sürecek mesala 30 frame her biri saniyenin onda biri kadar göstereceksin toplmada 3 sn eder. O zaman splash içinde Timer koyar 3 sn sonra Açaçcağın sayfayı açarsın.
Burhan Aksendir
17.08.2014 - 06:03
Teşekkür ederim. Toplam 34 frameden oluşan ve 421 x 370 px ölçülerinde her biri 30KB tutan png formatındaki animasyon dosyalarımı hdpi içerisine ekledim. Diğer ayaları da dediğiniz gibi yaptım. Sony .Xperia Miro ile test ettim sorun olmadı. Ancak emulatör'de test ederken animasyon bitip tam diğer activity'e geçince şu hatayı veriyor: java.lang.OutOfMemoryError
Taha
17.08.2014 - 06:07
Emülatör oluştururken daha yüksek memory verin yada hiç uğraşmayın Genymotion kullanın. Genymotion nasıl kullanıcağın hakkında bilgiyi şurdan bulabilirsin: http://www.mobilhanem.com/android-genymotion-emulator-kurulumu-ve-google-play-yukleme/
Burhan Aksendir
17.08.2014 - 06:12
Teşekkür ederim yardımcı olduğunuz için. Genymotion kuracağım. Son olarak bu bahsettiğim hata emulatöre özgü ve ciddiye almamam gereken bir durumdur değil mi ?